import Vue from 'vue'
import axios from 'axios'
import config from './config'
import store from './store'

axios.defaults.baseURL = config.api; // 设置axios的基础请求路径
axios.defaults.timeout = 2000; // 设置axios的请求时间

//拦截器
axios.interceptors.request.use(config => {
    store.commit('ifLoading', true)
    //你可以在这里开始加载动画,  查询token  等等之类
    return config
}, err => {
    return Promise.reject(err)
})




//async 表示函数返回一个Promise 对象，可以使用 then 方法添加回调函数。
//await 表示返回值需要等待
axios.loadData = async function (url) {
    const resp = await axios.get(url);
    return resp.data;
}

Vue.prototype.$http = axios;// 将axios添加到 Vue的原型，这样一切vue实例都可以使用该对象


//检查状态码 status
function checkStatus(res) {
    store.commit('ifLoading', false)
    if ((res.status === 200 || res.status === 304) && res.data.status == "success") { //当状态正常是返回原样的数据
        return res.data.data
    } else {
        Notification.error({
            title: '错误',
            message: res.data.message || res.data.msg || '未知异常'
        })
        return false // 状态不正常时可以返回自己自定义的一些格式或者状态什么的
    }
}

export default {
    file(url, data) {
        if (!url) return
        return axios({
            method: 'post',
            url,
            data,
            headers: {
                'Content-Type': 'multipart/form-data'
            },
            timeout: 10000
        }).then(checkStatus).catch(res => {
            Notification.error({
                title: '错误',
                message: res
            })
            return false
        })
    },
}

